package com.citicpub_cloud.restfull.utils;

import java.lang.reflect.Field;

import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import net.sf.json.JSONNull;
import net.sf.json.util.PropertyFilter;

/**
 * Created by dlm on 2016/5/24.
 */
public class NullJavaIgnoreFilter implements PropertyFilter {

    private static Logger log = LoggerFactory.getLogger(NullJavaIgnoreFilter.class);
    @Override
    public boolean apply(Object object, String name, Object value) {
        //值 为空时即跳过处理
        if(null==value){
            return true;
        }
        if(value instanceof JSONNull){
                return true;
        }
        try {
            //处理日期字段的值为""空字串时
            Field field  = object.getClass().getDeclaredField(name);
            if(field.getType().equals(java.util.Date.class)){
                if(value instanceof String){
                    String val = (String) value;
                    if(StringUtils.isBlank(val)){
                        return true;
                    }
                }
            }
        } catch (NoSuchFieldException e) {
            //不处理
            //log.error("空指针json转换出错",e);
        	log.debug("对象中没有此属性字段：{}",e.getMessage());
            //没有此字段，因此忽略此字段的解析。
            return true;
        }
        return false;
    }
}
